import { fileURLToPath, URL } from 'node:url'

import VueRouter from 'unplugin-vue-router/vite';
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueDevTools from 'vite-plugin-vue-devtools'
import vueJsx from '@vitejs/plugin-vue-jsx'
// https://vite.dev/config/
export default defineConfig({
  plugins: [
    VueRouter({ 
      routesFolder: ['src/views/20241211', 
        'src/views/20241212',
        'src/views/20241213',
        'src/views/20241214',
        'src/views/20241216',
        'src/views/20241223',
        'src/views/20241224'
      ],//指定路由文件所在的目录
      extensions: ['.vue', '.js',], //指定路由文件的后缀名
     }),
    vue(),
    vueDevTools(),
    vueJsx(),
  ],
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url))
    },
  },
  // -----------------------------------------------------
  // 以下为新增内容
  server: {
    //这是 Vite 配置对象中的一部分，主要用来配置开发服务器的行为，比如端口、是否自动打开浏览器、是否启用热更新等。
    open: true, //表示在启动开发服务器时，自动打开浏览器。如果你设置为 false，则不会自动打开。
    port: Number(process.env.VITE_CLI_PORT), //指定开发服务器的端口 从环境变量中读取端口号，然后通过Number转换为数字
    proxy: {
      [process.env.VITE_BASE_API as string]: {
        //这里使用了环境变量 VITE_BASE_API 作为代理的路径前缀，as string 是为了确保 TypeScript 可以识别这个值是字符串类型。比如，VITE_BASE_API 可以设置为 /api，这意味着所有请求以 /api 开头的路径都将被代理
        target: `${process.env.VITE_BASE_PATH}`, //target 是目标服务器的地址，所有符合条件的请求都会被代理到该地址。VITE_BASE_PATH 是从环境变量中获取的，它指定了后端服务的路径地址。例如，VITE_BASE_PATH 可能是 http://localhost:8080，所以所有 /api 开头的请求都会被转发到 http://localhost:8080。
        changeOrigin: true, //这个配置会修改请求头中的 Origin 字段，使其与目标服务器一致。通常用来处理跨域问题。比如，如果你请求的目标是 http://localhost:8080，默认情况下，浏览器会把请求的 Origin 设置为当前的 URL，但使用 changeOrigin: true 后，Origin 会被改为目标服务器的地址，避免跨域问题
        rewrite: (path) => path.replace(new RegExp('^' + process.env.VITE_BASE_API), ''), //这是一个路径重写的规则，用来改变请求路径。例如，如果请求的是 /api/user，而 VITE_BASE_API 配置为 /api，那么通过代理，路径会被重写为 /user。这意味着 /api/user 的请求会被代理到目标服务器的 /user 路径。
      },
      '/sse': {
        //'/sse'：这是直接匹配路径 /sse，表示所有以 /sse 开头的请求会被代理到目标地址。
        target: `${process.env.VITE_BASE_PATH}`, //目标服务器的地址与第一个代理配置相同，这里的请求会被转发到 process.env.VITE_BASE_PATH 指定的路径
        changeOrigin: true, //同样，这会改变请求头中的 Origin 字段，以避免跨域问题。
        rewrite: (path) => path.replace(new RegExp('^/sse'), ''), //这个配置会将请求路径中的 /sse 前缀去掉。例如，访问 /sse/events 会被重写为 /events，然后转发到目标地址
      },
    },
  },

})
